
        <html>
			<head>
			     <title>首例具有中文提示的比特币勒索软件“LOCKY” - SwordLea</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/13032">http://drops.wooyun.org/papers/13032</a></h1>
				
      <p>
        <h1>0x00 概述</h1>

<hr />

<p>安天安全研究与应急处理中心（安天CERT）发现一款新的勒索软件家族，名为“Locky”，它通过RSA-2048和AES-128算法对100多种文件类型进行加密，同时在每个存在加密文件的目录下释放一个名为&#95;Locky&#95;recover_instructions.txt的勒索提示文件。经过安天CERT研究人员分析发现，这是一类利用垃圾邮件进行传播的勒索软件，是首例具有中文提示的比特币勒索软件。</p>

<!--more-->

<h1>0x01 样本分析</h1>

<hr />

<h3>1.1 样本标签</h3>

<table>
  <tr>
    <th>
    </th>
    
    <th>
    </th>
  </tr>
  
  <tr>
    <td>
      病毒名称
    </td>
    
    <td>
      Trojan/Win32.Locky.a
    </td>
  </tr>
  
  <tr>
    <td>
      原始文件名
    </td>
    
    <td>
      ladybi.exe
    </td>
  </tr>
  
  <tr>
    <td>
      MD5
    </td>
    
    <td>
      FB6CA1CD232151D667F6CD2484FEE8C8
    </td>
  </tr>
  
  <tr>
    <td>
      处理器架构
    </td>
    
    <td>
      X86-32
    </td>
  </tr>
  
  <tr>
    <td>
      文件大小
    </td>
    
    <td>
      180 KB (184,320 字节)
    </td>
  </tr>
  
  <tr>
    <td>
      文件格式
    </td>
    
    <td>
      BinExecute/Microsoft.EXE[:X86]
    </td>
  </tr>
  
  <tr>
    <td>
      时间戳
    </td>
    
    <td>
      42B63E17->2005-06-20 11:55:03
    </td>
  </tr>
  
  <tr>
    <td>
      数字签名
    </td>
    
    <td>
      NO
    </td>
  </tr>
  
  <tr>
    <td>
      加壳类型
    </td>
    
    <td>
      无
    </td>
  </tr>
  
  <tr>
    <td>
      编译语言
    </td>
    
    <td>
      Microsoft Visual C++ 6.0
    </td>
  </tr>
  
  <tr>
    <td>
      VT首次上传时间
    </td>
    
    <td>
      2016-02-16 10:53:39
    </td>
  </tr>
  
  <tr>
    <td>
      VT检测结果
    </td>
    
    <td>
      41/55
    </td>
  </tr>
</table>

<h3>1.2 样本功能</h3>

<p>该勒索软件“Locky”使用绑架用户数据的方法对用户进行敲诈勒索。它通过RSA-2048和AES-128算法对100多种文件类型进行加密，同时在每个存在加密文件的目录下释放一个名为&#95;Locky&#95;recover_instructions.txt的勒索提示文件。</p>

<p>“Locky”样本的本地行为：复制自身到系统临时目录%Temp%下，并重新命名为svchost；对系统中的文件进行遍历，判断文件后缀名是否在样本内置的列表中，若存在，则对样本进行加密操作；在多个文件夹中创建提示文件&#95;Locky&#95;recover&#95;instructions.txt；在桌面上创建文件&#95;Locky&#95;recover&#95;instructions.bmp；并将该文件设置为桌面背景，提示用户如何操作可以成功恢复被加密的文件；添加相关注册表键值；删除系统还原快照。</p>

<p><strong>复制自身到%Temp%目录下名为svchost.exe,并添加启动项。</strong></p>

<p><strong>加密上百种文件类型如下：</strong></p>

<blockquote>
  <p>.m4u .m3u .mid .wma .flv .3g2 .mkv .3gp .mp4 .mov .avi .asf .mpeg .vob .mpg .wmv .fla .swf .wav .mp3 .qcow2 .vdi .vmdk .vmx .gpg .aes .ARC .PAQ .tar.bz2 .tbk .bak .tar .tgz .gz .7z .rar .zip .djv .djvu .svg .bmp .png .gif .raw .cgm .jpeg .jpg .tif .tiff .NEF .psd .cmd .bat .sh .class .jar .java .rb .asp .cs .brd .sch .dch .dip .pl .vbs .vb .js .asm .pas .cpp .php .ldf .mdf .ibd .MYI .MYD .frm .odb .dbf .db .mdb .sql .SQLITEDB .SQLITE3 .asc .lay6 .lay .ms11 .sldm .sldx .ppsm .ppsx .ppam .docb .mml .sxm .otg .odg .uop .potx .potm .pptx .pptm .std .sxd .pot .pps .sti .sxi .otp .odp .wb2 .123 .wks .wk1 .xltx .xltm .xlsx .xlsm .xlsb .slk .xlw .xlt .xlm .xlc .dif .stc .sxc .ots .ods .hwp .602 .dotm .dotx .docm .docx .DOT .3dm .max .3ds .xml .txt .CSV .uot .RTF .pdf .XLS .PPT .stw .sxw .ott .odt .DOC .pem .p12 .csr .crt .key</p>
</blockquote>

<p><strong>对路径和文件名中包含下列字符串的文件不进行加密：</strong></p>

<blockquote>
  <p>tmp, Application Data, AppData, Program Files (x86), Program Files, temp, thumbs.db, $Recycle.Bin, System Volume Information, Boot, Windows</p>
</blockquote>

<p><strong>“Locky”添加的注册表项:</strong></p>

<pre><code>#!bash
HKCU\Software\Locky
HKCU\Software\Locky\id
HKCU\Software\Locky\pubkey
HKCU\Software\Locky\paytext
HKCU\Software\Locky\completed
HKCU\Control Panel\Desktop\Wallpaper      "%UserProfile%\Desktop\_Locky_recover_instructions.bmp"
</code></pre>

<p><strong>删除系统还原快照</strong></p>

<p>通过调用<code>vssadmin.exe Delete Shadows /All /Quiet</code>删除全盘所有卷影副本，使受害系统不能够通过卷影副本进行系统还原。</p>

<p><strong>网络行为：</strong></p>

<ul>
<li>向C&amp;C服务器发送被感染机器的部分信息。</li>
<li>从C&amp;C服务器下载RSA公钥，为后面的加密做准备。</li>
<li>上传将被加密的文件列表。</li>
<li>根据系统语言从服务器获取对应的提示信息。</li>
</ul>

<h3>1.3 相关技术</h3>

<p><strong>1.3.1 域名生成算法</strong></p>

<p>“Locky”样本会首先使用函数rdtsc获取处理器时间，将该值与某变量进行求余运算，通过对该值的判断来决定样本是访问使用算法生成的域名，还是直接访问样本中的硬编码IP地址。这样可以使样本具有一定的随机性。</p>

<p><img src="http://static.wooyun.org//drops/20160219/2016021910074861874110.png" alt="p1" /> 图1 域名生成算法</p>

<p>域名在生成的时候，需要使用一个随机数，该随机数的计算是根据被感染机器的年月日进行的。</p>

<p><img src="http://static.wooyun.org//drops/20160219/2016021910075040707210.png" alt="p2" /> 图2 随机值计算</p>

<p><strong>1.3.2 C&amp;C服务器</strong></p>

<p>受害主机与服务器是使用HTTP Post请求进行交互。受害主机访问C&amp;C服务器上的main.php，参数有以下几个：</p>

<table>
<thead>
<tr>
  <th>参数</th>
  <th>含义</th>
</tr>
</thead>
<tbody>
<tr>
  <td>id</td>
  <td>随机生成的编号</td>
</tr>
<tr>
  <td>act</td>
  <td>C&amp;C控制命令</td>
</tr>
<tr>
  <td>affid</td>
  <td>会员ID</td>
</tr>
<tr>
  <td>lang</td>
  <td>计算机所使用的语言</td>
</tr>
<tr>
  <td>corp</td>
  <td>未知</td>
</tr>
<tr>
  <td>serv</td>
  <td>未知</td>
</tr>
<tr>
  <td>os</td>
  <td>操作系统</td>
</tr>
<tr>
  <td>sp</td>
  <td>补丁包</td>
</tr>
<tr>
  <td>x64</td>
  <td>是否为64位系统</td>
</tr>
</tbody>
</table>

<p>受害主机所有发出的请求都使用样本中硬编码的key进行加密操作，加密后发送到C&amp;C服务器。从服务器中接收的数据包同样使用特定的加密方法加密，接收到加密数据后，“Locky”会首先进行解密操作。</p>

<p>加密的数据包部分内容：</p>

<p><img src="http://static.wooyun.org//drops/20160219/201602191007518147536.png" alt="p3" /> 图3 数据包内容</p>

<p>数据包发送时加密的算法：</p>

<p><img src="http://static.wooyun.org//drops/20160219/201602191007527486142.png" alt="p4" /> 图4 加密算法</p>

<p>接收到数据时，样本的解密算法：</p>

<p><img src="http://static.wooyun.org//drops/20160219/201602191007541219452.png" alt="p5" /> 图5 解密算法</p>

<p><strong>1.3.3 控制命令</strong></p>

<p>目前所知道的控制命令有四种，分别为：<strong>stats</strong>、<strong>getkey</strong>、<strong>report</strong>、<strong>gettext</strong>。</p>

<table>
<thead>
<tr>
  <th>命令</th>
  <th>功能</th>
</tr>
</thead>
<tbody>
<tr>
  <td>stats</td>
  <td>发送一些基本信息，如：已成功加密的文件个数、加密失败的文件个数、长度。</td>
</tr>
<tr>
  <td>getkey</td>
  <td>从服务器上下载加密时使用的RSA的公钥。</td>
</tr>
<tr>
  <td>report</td>
  <td>向服务器发送加密的文件列表。</td>
</tr>
<tr>
  <td>gettext</td>
  <td>获取提示用户如何解密的信息，C&amp;C服务器会根据回传的计算机所使用的语言来返回对应的语言提示信息，如：回传zh会返回汉语、回传en会返回英语。</td>
</tr>
</tbody>
</table>

<p>中文的提示信息如下：</p>

<p><img src="http://static.wooyun.org//drops/20160219/201602191007557644862.png" alt="p6" /> 图6 提示内容</p>

<h1>0x02 总结</h1>

<hr />

<p>通过安天CERT目前的分析来看，勒索软件“Locky”的功能与之前分析的勒索软件<sup>【1】</sup>的功能基本一致。勒索软件能给攻击者带来巨大的收益，因其使用比特币进行交易，所以很难追踪；一旦用户感染了勒索软件，只能付费进行解密或是丢弃这些文件。安天CERT提示广大用户，即使支付赎金也不一定能保证可以完全恢复被加密的文件。防止数据被加密，更应该注意勒索软件的防御，养成良好的上网使用习惯，不要轻易执行来历不明的文件。</p>

<p>“Locky”和其他勒索软件的目的一致，都是加密用户数据并向用户勒索金钱。与其他勒索软件不同的是，它是首例具有中文提示的比特币勒索软件，这预示着勒索软件作者针对的目标范围逐渐扩大，勒索软件将发展出更多的本地化版本。</p>

<p>安天CERT预测，今后中国将受到更多类似的勒索软件攻击。所以，如何防御勒索便成为保卫网络安全的重要任务之一。</p>

<h1>0x03 附录</h1>

<hr />

<h3>一、参考资料</h3>

<ul>
<li>【1】 揭开勒索软件的真面目 <a href="http://www.antiy.com/response/ransomware.html">http://www.antiy.com/response/ransomware.html</a></li>
</ul>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          